package ch.trackedbean.tracking.injection;

import java.io.*;

/**
 * Some tracking relevant information about a {@link Class}.
 * 
 * @author M. Hautle
 */
public interface IClassInformation {
    /**
     * Returns wherever the represented class or one of it's parents is {@link Serializable}.
     * 
     * @return True if the represented class is {@link Serializable}
     */
    boolean isSerializable();

    /**
     * Returns wherever the represented class is explicitly flagged as tracked.
     * 
     * @return True if the represented class is tracked
     */
    boolean isTracked();

    /**
     * Returns wherever a parent of the represented class is tracked.
     * 
     * @return True if at least one parent class is tracked
     */
    boolean isParentTracked();
}
